home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 1.iso / dist / fw_emacs-lisp-intro.idb / usr / freeware / info / emacs-lisp-intro.info-15.z / emacs-lisp-intro.info-15
Text File  |  2002-07-08  |  50KB  |  982 lines

  1. This is emacs-lisp-intro.info, produced by makeinfo version 4.0b from
  2. emacs-lisp-intro.texi.
  3.  
  4. INFO-DIR-SECTION Emacs
  5. START-INFO-DIR-ENTRY
  6. * Emacs Lisp Intro: (eintr).
  7.               A simple introduction to Emacs Lisp programming.
  8. END-INFO-DIR-ENTRY
  9.  
  10.    This is an introduction to `Programming in Emacs Lisp', for people
  11. who are not programmers.
  12.  
  13.    Edition 2.04, 2001 Dec 17
  14.  
  15.    Copyright (C) 1990, '91, '92, '93, '94, '95, '97, 2001 Free Software
  16. Foundation, Inc.
  17.  
  18.    Permission is granted to copy, distribute and/or modify this document
  19. under the terms of the GNU Free Documentation License, Version 1.1 or
  20. any later version published by the Free Software Foundation; with the
  21. Invariant Section being the Preface, with the Front-Cover Texts being
  22. no Front-Cover Texts, and with the Back-Cover Texts being no Back-Cover
  23. Texts.  A copy of the license is included in the section entitled "GNU
  24. Free Documentation License".
  25.  
  26. 
  27. File: emacs-lisp-intro.info,  Node: Another Bug,  Next: Final printed graph,  Prev: mapcar,  Up: Print Whole Graph
  28.  
  29. Another Bug ... Most Insidious
  30. ------------------------------
  31.  
  32.    I said `almost ready to print'!  Of course, there is a bug in the
  33. `print-graph' function ...  It has a `vertical-step' option, but not a
  34. `horizontal-step' option.  The `top-of-range' scale goes from 10 to 300
  35. by tens.  But the `print-graph' function will print only by ones.
  36.  
  37.    This is a classic example of what some consider the most insidious
  38. type of bug, the bug of omission.  This is not the kind of bug you can
  39. find by studying the code, for it is not in the code; it is an omitted
  40. feature.  Your best actions are to try your program early and often;
  41. and try to arrange, as much as you can, to write code that is easy to
  42. understand and easy to change.  Try to be aware, whenever you can, that
  43. whatever you have written, _will_ be rewritten, if not soon,
  44. eventually.  A hard maxim to follow.
  45.  
  46.    It is the `print-X-axis-numbered-line' function that needs the work;
  47. and then the `print-X-axis' and the `print-graph' functions need to be
  48. adapted.  Not much needs to be done; there is one nicety: the numbers
  49. ought to line up under the tic marks.  This takes a little thought.
  50.  
  51.    Here is the corrected `print-X-axis-numbered-line':
  52.  
  53.      (defun print-X-axis-numbered-line
  54.        (number-of-X-tics X-axis-leading-spaces
  55.         &optional horizontal-step)
  56.        "Print line of X-axis numbers"
  57.        (let ((number X-axis-label-spacing)
  58.              (horizontal-step (or horizontal-step 1)))
  59.          (insert X-axis-leading-spaces)
  60.          ;; Delete extra leading spaces.
  61.          (delete-char
  62.           (- (1-
  63.               (length (number-to-string horizontal-step)))))
  64.          (insert (concat
  65.                   (make-string
  66.                    ;; Insert white space.
  67.                    (-  (* symbol-width
  68.                           X-axis-label-spacing)
  69.                        (1-
  70.                         (length
  71.                          (number-to-string horizontal-step)))
  72.                        2)
  73.                    ? )
  74.                   (number-to-string
  75.                    (* number horizontal-step))))
  76.          ;; Insert remaining numbers.
  77.          (setq number (+ number X-axis-label-spacing))
  78.          (while (> number-of-X-tics 1)
  79.            (insert (X-axis-element
  80.                     (* number horizontal-step)))
  81.            (setq number (+ number X-axis-label-spacing))
  82.            (setq number-of-X-tics (1- number-of-X-tics)))))
  83.  
  84.    If you are reading this in Info, you can see the new versions of
  85. `print-X-axis' `print-graph' and evaluate them.  If you are reading
  86. this in a printed book, you can see the changed lines here (the full
  87. text is too much to print).
  88.  
  89.      (defun print-X-axis (numbers-list horizontal-step)
  90.        "Print X axis labels to length of NUMBERS-LIST.
  91.      Optionally, HORIZONTAL-STEP, a positive integer,
  92.      specifies how much an X  axis label increments for
  93.      each column."
  94.      ;; Value of symbol-width and full-Y-label-width
  95.      ;; are passed by `print-graph'.
  96.        (let* ((leading-spaces
  97.                (make-string full-Y-label-width ? ))
  98.             ;; symbol-width is provided by graph-body-print
  99.             (tic-width (* symbol-width X-axis-label-spacing))
  100.             (X-length (length numbers-list))
  101.             (X-tic
  102.              (concat
  103.               (make-string
  104.                ;; Make a string of blanks.
  105.                (-  (* symbol-width X-axis-label-spacing)
  106.                    (length X-axis-tic-symbol))
  107.                ? )
  108.               ;; Concatenate blanks with tic symbol.
  109.               X-axis-tic-symbol))
  110.             (tic-number
  111.              (if (zerop (% X-length tic-width))
  112.                  (/ X-length tic-width)
  113.                (1+ (/ X-length tic-width)))))
  114.      
  115.          (print-X-axis-tic-line
  116.           tic-number leading-spaces X-tic)
  117.          (insert "\n")
  118.          (print-X-axis-numbered-line
  119.           tic-number leading-spaces horizontal-step)))
  120.  
  121.      (defun print-graph
  122.        (numbers-list &optional vertical-step horizontal-step)
  123.        "Print labelled bar graph of the NUMBERS-LIST.
  124.      The numbers-list consists of the Y-axis values.
  125.      
  126.      Optionally, VERTICAL-STEP, a positive integer,
  127.      specifies how much a Y axis label increments for
  128.      each line.  For example, a step of 5 means that
  129.      each row is five units.
  130.      
  131.      Optionally, HORIZONTAL-STEP, a positive integer,
  132.      specifies how much an X  axis label increments for
  133.      each column."
  134.        (let* ((symbol-width (length graph-blank))
  135.               ;; `height' is both the largest number
  136.               ;; and the number with the most digits.
  137.               (height (apply 'max numbers-list))
  138.               (height-of-top-line
  139.                (if (zerop (% height Y-axis-label-spacing))
  140.                    height
  141.                  ;; else
  142.                  (* (1+ (/ height Y-axis-label-spacing))
  143.                     Y-axis-label-spacing)))
  144.               (vertical-step (or vertical-step 1))
  145.               (full-Y-label-width
  146.                (length
  147.                 (concat
  148.                  (number-to-string
  149.                   (* height-of-top-line vertical-step))
  150.                  Y-axis-tic))))
  151.          (print-Y-axis
  152.           height-of-top-line full-Y-label-width vertical-step)
  153.          (graph-body-print
  154.              numbers-list height-of-top-line symbol-width)
  155.          (print-X-axis numbers-list horizontal-step)))
  156.  
  157. 
  158. File: emacs-lisp-intro.info,  Node: Final printed graph,  Prev: Another Bug,  Up: Print Whole Graph
  159.  
  160. The Printed Graph
  161. -----------------
  162.  
  163.    When made and installed, you can call the `print-graph' command like
  164. this:
  165.  
  166.      (print-graph fiftieth-list-for-graph 50 10)
  167.  
  168.    Here is the graph:
  169.  
  170.  
  171.  
  172.      1000 -  *
  173.              **
  174.              **
  175.              **
  176.              **
  177.       750 -  ***
  178.              ***
  179.              ***
  180.              ***
  181.              ****
  182.       500 - *****
  183.             ******
  184.             ******
  185.             ******
  186.             *******
  187.       250 - ********
  188.             *********                     *
  189.             ***********                   *
  190.             *************                 *
  191.        50 - ***************** *           *
  192.             |   |    |    |    |    |    |    |
  193.            10  50  100  150  200  250  300  350
  194.  
  195.  
  196.  
  197.    The largest group of functions contain 10 - 19 words and symbols
  198. each.
  199.  
  200. 
  201. File: emacs-lisp-intro.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: Full Graph,  Up: Top
  202.  
  203. GNU Free Documentation License
  204. ******************************
  205.  
  206.                         Version 1.1, March 2000
  207.      Copyright (C) 2000 Free Software Foundation, Inc.
  208.      59 Temple Place, Suite 330, Boston, MA  02111-1307, USA
  209.      
  210.      Everyone is permitted to copy and distribute verbatim copies
  211.      of this license document, but changing it is not allowed.
  212.  
  213.   0. PREAMBLE
  214.  
  215.      The purpose of this License is to make a manual, textbook, or other
  216.      written document "free" in the sense of freedom: to assure everyone
  217.      the effective freedom to copy and redistribute it, with or without
  218.      modifying it, either commercially or noncommercially.  Secondarily,
  219.      this License preserves for the author and publisher a way to get
  220.      credit for their work, while not being considered responsible for
  221.      modifications made by others.
  222.  
  223.      This License is a kind of "copyleft", which means that derivative
  224.      works of the document must themselves be free in the same sense.
  225.      It complements the GNU General Public License, which is a copyleft
  226.      license designed for free software.
  227.  
  228.      We have designed this License in order to use it for manuals for
  229.      free software, because free software needs free documentation: a
  230.      free program should come with manuals providing the same freedoms
  231.      that the software does.  But this License is not limited to
  232.      software manuals; it can be used for any textual work, regardless
  233.      of subject matter or whether it is published as a printed book.
  234.      We recommend this License principally for works whose purpose is
  235.      instruction or reference.
  236.  
  237.   1. APPLICABILITY AND DEFINITIONS
  238.  
  239.      This License applies to any manual or other work that contains a
  240.      notice placed by the copyright holder saying it can be distributed
  241.      under the terms of this License.  The "Document", below, refers to
  242.      any such manual or work.  Any member of the public is a licensee,
  243.      and is addressed as "you".
  244.  
  245.      A "Modified Version" of the Document means any work containing the
  246.      Document or a portion of it, either copied verbatim, or with
  247.      modifications and/or translated into another language.
  248.  
  249.      A "Secondary Section" is a named appendix or a front-matter
  250.      section of the Document that deals exclusively with the
  251.      relationship of the publishers or authors of the Document to the
  252.      Document's overall subject (or to related matters) and contains
  253.      nothing that could fall directly within that overall subject.
  254.      (For example, if the Document is in part a textbook of
  255.      mathematics, a Secondary Section may not explain any mathematics.)
  256.      The relationship could be a matter of historical connection with
  257.      the subject or with related matters, or of legal, commercial,
  258.      philosophical, ethical or political position regarding them.
  259.  
  260.      The "Invariant Sections" are certain Secondary Sections whose
  261.      titles are designated, as being those of Invariant Sections, in
  262.      the notice that says that the Document is released under this
  263.      License.
  264.  
  265.      The "Cover Texts" are certain short passages of text that are
  266.      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
  267.      that says that the Document is released under this License.
  268.  
  269.      A "Transparent" copy of the Document means a machine-readable copy,
  270.      represented in a format whose specification is available to the
  271.      general public, whose contents can be viewed and edited directly
  272.      and straightforwardly with generic text editors or (for images
  273.      composed of pixels) generic paint programs or (for drawings) some
  274.      widely available drawing editor, and that is suitable for input to
  275.      text formatters or for automatic translation to a variety of
  276.      formats suitable for input to text formatters.  A copy made in an
  277.      otherwise Transparent file format whose markup has been designed
  278.      to thwart or discourage subsequent modification by readers is not
  279.      Transparent.  A copy that is not "Transparent" is called "Opaque".
  280.  
  281.      Examples of suitable formats for Transparent copies include plain
  282.      ASCII without markup, Texinfo input format, LaTeX input format,
  283.      SGML or XML using a publicly available DTD, and
  284.      standard-conforming simple HTML designed for human modification.
  285.      Opaque formats include PostScript, PDF, proprietary formats that
  286.      can be read and edited only by proprietary word processors, SGML
  287.      or XML for which the DTD and/or processing tools are not generally
  288.      available, and the machine-generated HTML produced by some word
  289.      processors for output purposes only.
  290.  
  291.      The "Title Page" means, for a printed book, the title page itself,
  292.      plus such following pages as are needed to hold, legibly, the
  293.      material this License requires to appear in the title page.  For
  294.      works in formats which do not have any title page as such, "Title
  295.      Page" means the text near the most prominent appearance of the
  296.      work's title, preceding the beginning of the body of the text.
  297.  
  298.   2. VERBATIM COPYING
  299.  
  300.      You may copy and distribute the Document in any medium, either
  301.      commercially or noncommercially, provided that this License, the
  302.      copyright notices, and the license notice saying this License
  303.      applies to the Document are reproduced in all copies, and that you
  304.      add no other conditions whatsoever to those of this License.  You
  305.      may not use technical measures to obstruct or control the reading
  306.      or further copying of the copies you make or distribute.  However,
  307.      you may accept compensation in exchange for copies.  If you
  308.      distribute a large enough number of copies you must also follow
  309.      the conditions in section 3.
  310.  
  311.      You may also lend copies, under the same conditions stated above,
  312.      and you may publicly display copies.
  313.  
  314.   3. COPYING IN QUANTITY
  315.  
  316.      If you publish printed copies of the Document numbering more than
  317.      100, and the Document's license notice requires Cover Texts, you
  318.      must enclose the copies in covers that carry, clearly and legibly,
  319.      all these Cover Texts: Front-Cover Texts on the front cover, and
  320.      Back-Cover Texts on the back cover.  Both covers must also clearly
  321.      and legibly identify you as the publisher of these copies.  The
  322.      front cover must present the full title with all words of the
  323.      title equally prominent and visible.  You may add other material
  324.      on the covers in addition.  Copying with changes limited to the
  325.      covers, as long as they preserve the title of the Document and
  326.      satisfy these conditions, can be treated as verbatim copying in
  327.      other respects.
  328.  
  329.      If the required texts for either cover are too voluminous to fit
  330.      legibly, you should put the first ones listed (as many as fit
  331.      reasonably) on the actual cover, and continue the rest onto
  332.      adjacent pages.
  333.  
  334.      If you publish or distribute Opaque copies of the Document
  335.      numbering more than 100, you must either include a
  336.      machine-readable Transparent copy along with each Opaque copy, or
  337.      state in or with each Opaque copy a publicly-accessible
  338.      computer-network location containing a complete Transparent copy
  339.      of the Document, free of added material, which the general
  340.      network-using public has access to download anonymously at no
  341.      charge using public-standard network protocols.  If you use the
  342.      latter option, you must take reasonably prudent steps, when you
  343.      begin distribution of Opaque copies in quantity, to ensure that
  344.      this Transparent copy will remain thus accessible at the stated
  345.      location until at least one year after the last time you
  346.      distribute an Opaque copy (directly or through your agents or
  347.      retailers) of that edition to the public.
  348.  
  349.      It is requested, but not required, that you contact the authors of
  350.      the Document well before redistributing any large number of
  351.      copies, to give them a chance to provide you with an updated
  352.      version of the Document.
  353.  
  354.   4. MODIFICATIONS
  355.  
  356.      You may copy and distribute a Modified Version of the Document
  357.      under the conditions of sections 2 and 3 above, provided that you
  358.      release the Modified Version under precisely this License, with
  359.      the Modified Version filling the role of the Document, thus
  360.      licensing distribution and modification of the Modified Version to
  361.      whoever possesses a copy of it.  In addition, you must do these
  362.      things in the Modified Version:
  363.  
  364.        A. Use in the Title Page (and on the covers, if any) a title
  365.           distinct from that of the Document, and from those of
  366.           previous versions (which should, if there were any, be listed
  367.           in the History section of the Document).  You may use the
  368.           same title as a previous version if the original publisher of
  369.           that version gives permission.
  370.  
  371.        B. List on the Title Page, as authors, one or more persons or
  372.           entities responsible for authorship of the modifications in
  373.           the Modified Version, together with at least five of the
  374.           principal authors of the Document (all of its principal
  375.           authors, if it has less than five).
  376.  
  377.        C. State on the Title page the name of the publisher of the
  378.           Modified Version, as the publisher.
  379.  
  380.        D. Preserve all the copyright notices of the Document.
  381.  
  382.        E. Add an appropriate copyright notice for your modifications
  383.           adjacent to the other copyright notices.
  384.  
  385.        F. Include, immediately after the copyright notices, a license
  386.           notice giving the public permission to use the Modified
  387.           Version under the terms of this License, in the form shown in
  388.           the Addendum below.
  389.  
  390.        G. Preserve in that license notice the full lists of Invariant
  391.           Sections and required Cover Texts given in the Document's
  392.           license notice.
  393.  
  394.        H. Include an unaltered copy of this License.
  395.  
  396.        I. Preserve the section entitled "History", and its title, and
  397.           add to it an item stating at least the title, year, new
  398.           authors, and publisher of the Modified Version as given on
  399.           the Title Page.  If there is no section entitled "History" in
  400.           the Document, create one stating the title, year, authors,
  401.           and publisher of the Document as given on its Title Page,
  402.           then add an item describing the Modified Version as stated in
  403.           the previous sentence.
  404.  
  405.        J. Preserve the network location, if any, given in the Document
  406.           for public access to a Transparent copy of the Document, and
  407.           likewise the network locations given in the Document for
  408.           previous versions it was based on.  These may be placed in
  409.           the "History" section.  You may omit a network location for a
  410.           work that was published at least four years before the
  411.           Document itself, or if the original publisher of the version
  412.           it refers to gives permission.
  413.  
  414.        K. In any section entitled "Acknowledgments" or "Dedications",
  415.           preserve the section's title, and preserve in the section all
  416.           the substance and tone of each of the contributor
  417.           acknowledgments and/or dedications given therein.
  418.  
  419.        L. Preserve all the Invariant Sections of the Document,
  420.           unaltered in their text and in their titles.  Section numbers
  421.           or the equivalent are not considered part of the section
  422.           titles.
  423.  
  424.        M. Delete any section entitled "Endorsements".  Such a section
  425.           may not be included in the Modified Version.
  426.  
  427.        N. Do not retitle any existing section as "Endorsements" or to
  428.           conflict in title with any Invariant Section.
  429.  
  430.      If the Modified Version includes new front-matter sections or
  431.      appendices that qualify as Secondary Sections and contain no
  432.      material copied from the Document, you may at your option
  433.      designate some or all of these sections as invariant.  To do this,
  434.      add their titles to the list of Invariant Sections in the Modified
  435.      Version's license notice.  These titles must be distinct from any
  436.      other section titles.
  437.  
  438.      You may add a section entitled "Endorsements", provided it contains
  439.      nothing but endorsements of your Modified Version by various
  440.      parties--for example, statements of peer review or that the text
  441.      has been approved by an organization as the authoritative
  442.      definition of a standard.
  443.  
  444.      You may add a passage of up to five words as a Front-Cover Text,
  445.      and a passage of up to 25 words as a Back-Cover Text, to the end
  446.      of the list of Cover Texts in the Modified Version.  Only one
  447.      passage of Front-Cover Text and one of Back-Cover Text may be
  448.      added by (or through arrangements made by) any one entity.  If the
  449.      Document already includes a cover text for the same cover,
  450.      previously added by you or by arrangement made by the same entity
  451.      you are acting on behalf of, you may not add another; but you may
  452.      replace the old one, on explicit permission from the previous
  453.      publisher that added the old one.
  454.  
  455.      The author(s) and publisher(s) of the Document do not by this
  456.      License give permission to use their names for publicity for or to
  457.      assert or imply endorsement of any Modified Version.
  458.  
  459.   5. COMBINING DOCUMENTS
  460.  
  461.      You may combine the Document with other documents released under
  462.      this License, under the terms defined in section 4 above for
  463.      modified versions, provided that you include in the combination
  464.      all of the Invariant Sections of all of the original documents,
  465.      unmodified, and list them all as Invariant Sections of your
  466.      combined work in its license notice.
  467.  
  468.      The combined work need only contain one copy of this License, and
  469.      multiple identical Invariant Sections may be replaced with a single
  470.      copy.  If there are multiple Invariant Sections with the same name
  471.      but different contents, make the title of each such section unique
  472.      by adding at the end of it, in parentheses, the name of the
  473.      original author or publisher of that section if known, or else a
  474.      unique number.  Make the same adjustment to the section titles in
  475.      the list of Invariant Sections in the license notice of the
  476.      combined work.
  477.  
  478.      In the combination, you must combine any sections entitled
  479.      "History" in the various original documents, forming one section
  480.      entitled "History"; likewise combine any sections entitled
  481.      "Acknowledgments", and any sections entitled "Dedications".  You
  482.      must delete all sections entitled "Endorsements."
  483.  
  484.   6. COLLECTIONS OF DOCUMENTS
  485.  
  486.      You may make a collection consisting of the Document and other
  487.      documents released under this License, and replace the individual
  488.      copies of this License in the various documents with a single copy
  489.      that is included in the collection, provided that you follow the
  490.      rules of this License for verbatim copying of each of the
  491.      documents in all other respects.
  492.  
  493.      You may extract a single document from such a collection, and
  494.      distribute it individually under this License, provided you insert
  495.      a copy of this License into the extracted document, and follow
  496.      this License in all other respects regarding verbatim copying of
  497.      that document.
  498.  
  499.   7. AGGREGATION WITH INDEPENDENT WORKS
  500.  
  501.      A compilation of the Document or its derivatives with other
  502.      separate and independent documents or works, in or on a volume of
  503.      a storage or distribution medium, does not as a whole count as a
  504.      Modified Version of the Document, provided no compilation
  505.      copyright is claimed for the compilation.  Such a compilation is
  506.      called an "aggregate", and this License does not apply to the
  507.      other self-contained works thus compiled with the Document, on
  508.      account of their being thus compiled, if they are not themselves
  509.      derivative works of the Document.
  510.  
  511.      If the Cover Text requirement of section 3 is applicable to these
  512.      copies of the Document, then if the Document is less than one
  513.      quarter of the entire aggregate, the Document's Cover Texts may be
  514.      placed on covers that surround only the Document within the
  515.      aggregate.  Otherwise they must appear on covers around the whole
  516.      aggregate.
  517.  
  518.   8. TRANSLATION
  519.  
  520.      Translation is considered a kind of modification, so you may
  521.      distribute translations of the Document under the terms of section
  522.      4.  Replacing Invariant Sections with translations requires special
  523.      permission from their copyright holders, but you may include
  524.      translations of some or all Invariant Sections in addition to the
  525.      original versions of these Invariant Sections.  You may include a
  526.      translation of this License provided that you also include the
  527.      original English version of this License.  In case of a
  528.      disagreement between the translation and the original English
  529.      version of this License, the original English version will prevail.
  530.  
  531.   9. TERMINATION
  532.  
  533.      You may not copy, modify, sublicense, or distribute the Document
  534.      except as expressly provided for under this License.  Any other
  535.      attempt to copy, modify, sublicense or distribute the Document is
  536.      void, and will automatically terminate your rights under this
  537.      License.  However, parties who have received copies, or rights,
  538.      from you under this License will not have their licenses
  539.      terminated so long as such parties remain in full compliance.
  540.  
  541.  10. FUTURE REVISIONS OF THIS LICENSE
  542.  
  543.      The Free Software Foundation may publish new, revised versions of
  544.      the GNU Free Documentation License from time to time.  Such new
  545.      versions will be similar in spirit to the present version, but may
  546.      differ in detail to address new problems or concerns.  See
  547.      `http://www.gnu.org/copyleft/'.
  548.  
  549.      Each version of the License is given a distinguishing version
  550.      number.  If the Document specifies that a particular numbered
  551.      version of this License "or any later version" applies to it, you
  552.      have the option of following the terms and conditions either of
  553.      that specified version or of any later version that has been
  554.      published (not as a draft) by the Free Software Foundation.  If
  555.      the Document does not specify a version number of this License,
  556.      you may choose any version ever published (not as a draft) by the
  557.      Free Software Foundation.
  558.  
  559. 
  560. File: emacs-lisp-intro.info,  Node: Index,  Next: About the Author,  Prev: GNU Free Documentation License,  Up: Top
  561.  
  562. Index
  563. *****
  564.  
  565. * Menu:
  566.  
  567. * % (remainder function):                Compute a Remainder.
  568. * (debug) in code:                       debug-on-quit.
  569. * * (multiplication):                    defun.
  570. * * for read-only buffer:                Read-only buffer.
  571. * *scratch* buffer:                      print-elements-of-list.
  572. * .emacs file:                           Emacs Initialization.
  573. * .emacs file, beginning of:             Beginning a .emacs File.
  574. * / (division):                          Large buffer case.
  575. * <= (less than or equal):               Inc Example parts.
  576. * > (greater than):                      if in more detail.
  577. * Accumulate, type of recursive pattern: Accumulate.
  578. * add-hook:                              Text and Auto-fill.
  579. * and <1>:                               fwd-para let.
  580. * and:                                   kill-new function.
  581. * and, introduced:                       kill-new function.
  582. * Anonymous function:                    lambda.
  583. * append-to-buffer:                      append-to-buffer.
  584. * apply:                                 Columns of a graph.
  585. * apropos:                               Columns of a graph.
  586. * Argument as local variable:            Dec Example altogether.
  587. * argument defined:                      Arguments.
  588. * argument list defined:                 defun.
  589. * Argument, wrong type of:               Wrong Type of Argument.
  590. * Arguments:                             Arguments.
  591. * Arguments' data types:                 Data types.
  592. * Arguments, variable number of:         Variable Number of Arguments.
  593. * Asterisk for read-only buffer:         Read-only buffer.
  594. * Auto Fill mode turned on:              Text and Auto-fill.
  595. * autoload:                              Autoload.
  596. * Automatic mode selection:              Text and Auto-fill.
  597. * Axis, print horizontal:                print-X-axis.
  598. * Axis, print vertical:                  print-Y-axis.
  599. * beginning-of-buffer:                   beginning-of-buffer.
  600. * bind defined:                          set & setq.
  601. * body defined:                          defun.
  602. * Body of graph:                         Readying a Graph.
  603. * Buffer size:                           Buffer Size & Locations.
  604. * Buffer, history of word:               Buffer Names.
  605. * buffer-file-name:                      Buffer Names.
  606. * buffer-menu, bound to key:             Keybindings.
  607. * buffer-name:                           Buffer Names.
  608. * Bug, most insidious type:              Another Bug.
  609. * Building robots:                       Building Robots.
  610. * Building Tags in the Emacs sources:    etags.
  611. * Byte compiling:                        Byte Compiling.
  612. * C language primitives:                 Primitive Functions.
  613. * C, a digression into:                  Digression into C.
  614. * call defined:                          Switching Buffers.
  615. * cancel-debug-on-entry:                 debug-on-entry.
  616. * car, introduced:                       car cdr & cons.
  617. * cdr, introduced:                       car cdr & cons.
  618. * Changing a function definition:        Change a defun.
  619. * Chest of Drawers, metaphor for a symbol: Symbols as Chest.
  620. * Clipping text:                         Cutting & Storing Text.
  621. * Code installation:                     Permanent Installation.
  622. * command defined:                       How to Evaluate.
  623. * Comments in Lisp code:                 Change a defun.
  624. * Common Lisp:                           Lisp History.
  625. * compare-windows:                       Keybindings.
  626. * concat:                                Data types.
  627. * cond:                                  Recursion with cond.
  628. * condition-case:                        condition-case.
  629. * Conditional 'twixt two versions of Emacs: Simple Extension.
  630. * Conditional with if:                   if.
  631. * cons, example:                         kill-new function.
  632. * cons, introduced:                      cons.
  633. * copy-region-as-kill:                   copy-region-as-kill.
  634. * copy-to-buffer:                        copy-to-buffer.
  635. * Count words recursively:               recursive-count-words.
  636. * count-words-in-defun:                  count-words-in-defun.
  637. * count-words-region:                    count-words-region.
  638. * Counting:                              Counting.
  639. * Counting words in a defun <1>:         count-words-in-defun.
  640. * Counting words in a defun:             Words in a defun.
  641. * current-buffer:                        Getting Buffers.
  642. * Customizing your .emacs file:          Emacs Initialization.
  643. * Cutting and storing text:              Cutting & Storing Text.
  644. * Data types:                            Data types.
  645. * debug:                                 debug.
  646. * debug-on-entry:                        debug-on-entry.
  647. * debug-on-quit:                         debug-on-quit.
  648. * debugging:                             Debugging.
  649. * default-mode-line-format:              Mode Line.
  650. * default.el init file:                  Site-wide Init.
  651. * defcustom:                             defcustom.
  652. * Deferment in recursion:                No Deferment.
  653. * Defermentless solution:                No deferment solution.
  654. * Definition installation:               Install.
  655. * Definition writing:                    Writing Defuns.
  656. * Definition, how to change:             Change a defun.
  657. * defun:                                 defun.
  658. * defvar:                                defvar.
  659. * defvar for a user customizable variable: defvar and asterisk.
  660. * defvar with an asterisk:               defvar and asterisk.
  661. * delete-and-extract-region <1>:         Digression into C.
  662. * delete-and-extract-region:             delete-and-extract-region.
  663. * Deleting text:                         Cutting & Storing Text.
  664. * describe-function:                     simplified-beginning-of-buffer.
  665. * describe-function, introduced:         Finding More.
  666. * Digression into C:                     Digression into C.
  667. * directory-files:                       Files List.
  668. * Division:                              Large buffer case.
  669. * dolist:                                dolist.
  670. * dotimes:                               dotimes.
  671. * Drawers, Chest of, metaphor for a symbol: Symbols as Chest.
  672. * Duplicated words function:             the-the.
  673. * edebug:                                edebug.
  674. * edit-options:                          defvar and asterisk.
  675. * Else:                                  else.
  676. * Emacs version, choosing:               Simple Extension.
  677. * empty list defined:                    Lisp Atoms.
  678. * empty string defined:                  Review.
  679. * eobp:                                  fwd-para between paragraphs.
  680. * eq:                                    Review.
  681. * eq (example of use):                   last-command & this-command.
  682. * equal:                                 Review.
  683. * Erasing text:                          Cutting & Storing Text.
  684. * error:                                 rotate-yk-ptr body.
  685. * Error for symbol without function:     Void Function.
  686. * Error for symbol without value:        Void Variable.
  687. * Error message generation:              Making Errors.
  688. * etags:                                 etags.
  689. * evaluate defined:                      Run a Program.
  690. * Evaluating inner lists:                Evaluating Inner Lists.
  691. * Evaluation:                            Evaluation.
  692. * Evaluation practice:                   Practicing Evaluation.
  693. * Every, type of recursive pattern:      Every.
  694. * Example variable, fill-column:         fill-column Example.
  695. * expression defined:                    Lisp Atoms.
  696. * Falsehood and truth in Emacs Lisp:     Truth & Falsehood.
  697. * FDL, GNU Free Documentation License:   GNU Free Documentation License.
  698. * files-in-below-directory:              Files List.
  699. * fill-column, an example variable:      fill-column Example.
  700. * Find a File:                           Find a File.
  701. * Find function documentation:           Finding More.
  702. * Find source of function:               Finding More.
  703. * find-tags:                             Finding More.
  704. * Flowers in a field:                    Lisp Lists.
  705. * Focusing attention (narrowing):        Narrowing & Widening.
  706. * form defined:                          Lisp Atoms.
  707. * Formatting convention:                 append save-excursion.
  708. * Formatting help:                       Typing Lists.
  709. * forward-paragraph:                     forward-paragraph.
  710. * forward-sentence:                      forward-sentence.
  711. * function defined:                      Making Errors.
  712. * function definition defined:           defun.
  713. * Function definition installation:      Install.
  714. * Function definition writing:           Writing Defuns.
  715. * Function definition, how to change:    Change a defun.
  716. * Functions, primitive:                  Primitive Functions.
  717. * Generate an error message:             Making Errors.
  718. * Getting a buffer:                      Getting Buffers.
  719. * Global set key:                        Keybindings.
  720. * global-set-key:                        Keybindings.
  721. * global-unset-key:                      Keybindings.
  722. * Graph prototype:                       Readying a Graph.
  723. * Graph, printing all:                   Print Whole Graph.
  724. * graph-body-print:                      graph-body-print.
  725. * graph-body-print Final version.:       The final version.
  726. * Handling the kill ring:                Kill Ring.
  727. * Help typing lists:                     Typing Lists.
  728. * Horizontal axis printing:              print-X-axis.
  729. * if:                                    if.
  730. * if-part defined:                       if in more detail.
  731. * indent-tabs-mode:                      Indent Tabs Mode.
  732. * Indentation for formatting:            append save-excursion.
  733. * Initialization file:                   Emacs Initialization.
  734. * Initializing a variable:               defvar.
  735. * Inner list evaluation:                 Evaluating Inner Lists.
  736. * insert-buffer:                         insert-buffer.
  737. * insert-buffer-substring:               append-to-buffer overview.
  738. * Insidious type of bug:                 Another Bug.
  739. * Install a Function Definition:         Install.
  740. * Install code permanently:              Permanent Installation.
  741. * interactive:                           Interactive.
  742. * interactive function defined:          How to Evaluate.
  743. * Interactive functions:                 Interactive.
  744. * Interactive options:                   Interactive Options.
  745. * interactive, example use of:           insert-buffer interactive.
  746. * Interpreter, Lisp, explained:          Run a Program.
  747. * Interpreter, what it does:             Lisp Interpreter.
  748. * Keep, type of recursive pattern:       Keep.
  749. * Key setting globally:                  Keybindings.
  750. * Key unbinding:                         Keybindings.
  751. * Keymaps:                               Keymaps.
  752. * Keyword:                               Optional Arguments.
  753. * Kill ring handling:                    Kill Ring.
  754. * Kill ring overview:                    Kill Ring Overview.
  755. * kill-append:                           kill-append function.
  756. * kill-new:                              kill-new function.
  757. * kill-region:                           kill-region.
  758. * Killing text:                          Cutting & Storing Text.
  759. * lambda:                                lambda.
  760. * length:                                length.
  761. * lengths-list-file:                     lengths-list-file.
  762. * lengths-list-many-files:               lengths-list-many-files.
  763. * let:                                   let.
  764. * let expression sample:                 Sample let Expression.
  765. * let expression, parts of:              Parts of let Expression.
  766. * let variables uninitialized:           Uninitialized let Variables.
  767. * Library, as term for `file':           Finding More.
  768. * line-to-top-of-window:                 Simple Extension.
  769. * Lisp Atoms:                            Lisp Atoms.
  770. * Lisp history:                          Lisp History.
  771. * Lisp interpreter, explained:           Run a Program.
  772. * Lisp interpreter, what it does:        Lisp Interpreter.
  773. * Lisp Lists:                            Lisp Lists.
  774. * Lisp macro:                            delete-and-extract-region.
  775. * list-buffers, rebound:                 Keybindings.
  776. * Lists in a computer:                   List Implementation.
  777. * load-library:                          Loading Files.
  778. * load-path:                             Loading Files.
  779. * Loading files:                         Loading Files.
  780. * local variable defined:                Prevent confusion.
  781. * Local variables list, per-buffer,:     Text and Auto-fill.
  782. * Location of point:                     Buffer Size & Locations.
  783. * looking-at:                            fwd-para between paragraphs.
  784. * Loops:                                 while.
  785. * Loops and recursion:                   Loops & Recursion.
  786. * Maclisp:                               Lisp History.
  787. * Macro, lisp:                           delete-and-extract-region.
  788. * Mail aliases:                          Mail Aliases.
  789. * make tags:                             etags.
  790. * make-string:                           Y Axis Element.
  791. * mapcar:                                mapcar.
  792. * mark:                                  save-excursion.
  793. * mark-whole-buffer:                     mark-whole-buffer.
  794. * match-beginning:                       fwd-para no fill prefix.
  795. * max:                                   Columns of a graph.
  796. * message:                               message.
  797. * min:                                   Columns of a graph.
  798. * Mode line format:                      Mode Line.
  799. * Mode selection, automatic:             Text and Auto-fill.
  800. * Motion by sentence and paragraph:      Regexp Search.
  801. * Narrowing:                             Narrowing & Widening.
  802. * narrowing defined:                     Buffer Size & Locations.
  803. * nil:                                   Truth & Falsehood.
  804. * nil, history of word:                  Buffer Names.
  805. * No deferment solution:                 No deferment solution.
  806. * nreverse:                              Counting function definitions.
  807. * nth:                                   nth.
  808. * nthcdr <1>:                            copy-region-as-kill.
  809. * nthcdr:                                nthcdr.
  810. * nthcdr, example:                       kill-new function.
  811. * number-to-string:                      Y Axis Element.
  812. * occur:                                 Keybindings.
  813. * optional:                              Optional Arguments.
  814. * Optional arguments:                    Optional Arguments.
  815. * Options for interactive:               Interactive Options.
  816. * or:                                    Insert or.
  817. * other-buffer:                          Getting Buffers.
  818. * Paragraphs, movement by:               Regexp Search.
  819. * Parts of a Recursive Definition:       Recursive Definition Parts.
  820. * Parts of let expression:               Parts of let Expression.
  821. * Passing information to functions:      Arguments.
  822. * Pasting text:                          Yanking.
  823. * Patterns, searching for:               Regexp Search.
  824. * Per-buffer, local variables list:      Text and Auto-fill.
  825. * Permanent code installation:           Permanent Installation.
  826. * point:                                 save-excursion.
  827. * point defined:                         Buffer Size & Locations.
  828. * Point location:                        Buffer Size & Locations.
  829. * Point, mark, buffer preservation:      save-excursion.
  830. * Practicing evaluation:                 Practicing Evaluation.
  831. * Preserving point, mark, and buffer:    save-excursion.
  832. * Primitive functions:                   Primitive Functions.
  833. * Primitives written in C:               Primitive Functions.
  834. * Print horizontal axis:                 print-X-axis.
  835. * Print vertical axis:                   print-Y-axis.
  836. * print-elements-of-list:                print-elements-of-list.
  837. * print-elements-recursively:            Recursion with list.
  838. * print-graph Final version.:            The final version.
  839. * print-graph varlist:                   print-graph Varlist.
  840. * print-X-axis:                          X Axis Tic Marks.
  841. * print-X-axis-numbered-line:            X Axis Tic Marks.
  842. * print-X-axis-tic-line:                 X Axis Tic Marks.
  843. * print-Y-axis:                          print-Y-axis Penultimate.
  844. * Printing the whole graph:              Print Whole Graph.
  845. * prog1:                                 fwd-para between paragraphs.
  846. * progn:                                 progn.
  847. * Program, running one:                  Run a Program.
  848. * Prototype graph:                       Readying a Graph.
  849. * re-search-forward:                     re-search-forward.
  850. * Read-only buffer:                      Read-only buffer.
  851. * Readying a graph:                      Readying a Graph.
  852. * Rebinding keys:                        Keymaps.
  853. * Recursion:                             Recursion.
  854. * Recursion and loops:                   Loops & Recursion.
  855. * Recursion without Deferments:          No Deferment.
  856. * Recursive Definition Parts:            Recursive Definition Parts.
  857. * Recursive pattern: accumulate:         Accumulate.
  858. * Recursive pattern: every:              Every.
  859. * Recursive pattern: keep:               Keep.
  860. * Recursive Patterns:                    Recursive Patterns.
  861. * recursive-count-words:                 recursive-count-words.
  862. * recursive-graph-body-print:            recursive-graph-body-print.
  863. * recursive-lengths-list-many-files:     Several files recursively.
  864. * Recursively counting words:            recursive-count-words.
  865. * regexp-quote:                          fwd-para let.
  866. * Region, what it is:                    save-excursion.
  867. * Regular expression searches:           Regexp Search.
  868. * Regular expressions for word counting: Counting Words.
  869. * Remainder function, %:                 Compute a Remainder.
  870. * Repetition (loops):                    Loops & Recursion.
  871. * Repetition for word counting:          Counting Words.
  872. * Retrieving text:                       Yanking.
  873. * reverse:                               Counting function definitions.
  874. * Ring, making a list like a:            Kill Ring.
  875. * Robots, building:                      Building Robots.
  876. * rotate-yank-pointer <1>:               rotate-yank-pointer.
  877. * rotate-yank-pointer:                   Yanking.
  878. * Run a program:                         Run a Program.
  879. * Sample let expression:                 Sample let Expression.
  880. * save-excursion:                        save-excursion.
  881. * save-restriction:                      save-restriction.
  882. * search-forward:                        search-forward.
  883. * Searches, illustrating:                Regexp Search.
  884. * sentence-end:                          sentence-end.
  885. * Sentences, movement by:                Regexp Search.
  886. * set:                                   Using set.
  887. * set-buffer:                            Switching Buffers.
  888. * setcar:                                setcar.
  889. * setcdr:                                setcdr.
  890. * setcdr, example:                       kill-new function.
  891. * setq:                                  Using setq.
  892. * Setting a key globally:                Keybindings.
  893. * Setting value of variable:             set & setq.
  894. * side effect defined:                   Evaluation.
  895. * Simple extension in .emacs file:       Simple Extension.
  896. * simplified-beginning-of-buffer:        simplified-beginning-of-buffer.
  897. * site-init.el init file:                Site-wide Init.
  898. * site-load.el init file:                Site-wide Init.
  899. * Size of buffer:                        Buffer Size & Locations.
  900. * Solution without deferment:            No deferment solution.
  901. * sort:                                  Sorting.
  902. * Source level debugger:                 edebug.
  903. * Special form:                          Complications.
  904. * Special form of defun:                 defun.
  905. * Storing and cutting text:              Cutting & Storing Text.
  906. * string defined:                        Lisp Atoms.
  907. * switch-to-buffer:                      Switching Buffers.
  908. * Switching to a buffer:                 Switching Buffers.
  909. * Symbol names:                          Names & Definitions.
  910. * Symbol without function error:         Void Function.
  911. * Symbol without value error:            Void Variable.
  912. * Symbolic expressions, introduced:      Lisp Atoms.
  913. * Symbols as a Chest of Drawers:         Symbols as Chest.
  914. * Syntax categories and tables:          Syntax.
  915. * Tabs, preventing:                      Indent Tabs Mode.
  916. * TAGS file, create own:                 etags.
  917. * Tags in the Emacs sources:             etags.
  918. * TAGS table, specifying:                Finding More.
  919. * Text between double quotation marks:   Lisp Atoms.
  920. * Text Mode turned on:                   Text and Auto-fill.
  921. * Text retrieval:                        Yanking.
  922. * the-the:                               the-the.
  923. * then-part defined:                     if in more detail.
  924. * top-of-ranges:                         Counting function definitions.
  925. * triangle-bugged:                       debug.
  926. * triangle-recursively:                  Recursive triangle function.
  927. * Truth and falsehood in Emacs Lisp:     Truth & Falsehood.
  928. * Types of data:                         Data types.
  929. * Unbinding key:                         Keybindings.
  930. * Uninitialized let variables:           Uninitialized let Variables.
  931. * Variable initialization:               defvar.
  932. * Variable number of arguments:          Variable Number of Arguments.
  933. * Variable, example of, fill-column:     fill-column Example.
  934. * Variable, setting value:               set & setq.
  935. * Variables:                             Variables.
  936. * varlist defined:                       Parts of let Expression.
  937. * Version of Emacs, choosing:            Simple Extension.
  938. * Vertical axis printing:                print-Y-axis.
  939. * what-line:                             what-line.
  940. * while:                                 while.
  941. * Whitespace in lists:                   Whitespace in Lists.
  942. * Whole graph printing:                  Print Whole Graph.
  943. * Widening:                              Narrowing & Widening.
  944. * Widening, example of:                  what-line.
  945. * Word counting in a defun:              Words in a defun.
  946. * Words and symbols in defun:            Words and Symbols.
  947. * Words, counted recursively:            recursive-count-words.
  948. * Words, duplicated:                     the-the.
  949. * Writing a function definition:         Writing Defuns.
  950. * Wrong type of argument:                Wrong Type of Argument.
  951. * X axis printing:                       print-X-axis.
  952. * X-axis-element:                        X Axis Tic Marks.
  953. * Y axis printing:                       print-Y-axis.
  954. * Y-axis-column:                         Y-axis-column.
  955. * Y-axis-column Final version.:          The final version.
  956. * Y-axis-label-spacing:                  Compute a Remainder.
  957. * Y-axis-tic:                            Y Axis Element.
  958. * yank <1>:                              yank.
  959. * yank:                                  Yanking.
  960. * yank-pop:                              yank-pop.
  961. * zap-to-char:                           zap-to-char.
  962. * zerop:                                 rotate-yk-ptr body.
  963.  
  964. 
  965. File: emacs-lisp-intro.info,  Node: About the Author,  Prev: Index,  Up: Top
  966.  
  967. About the Author
  968. ****************
  969.  
  970.      Robert J. Chassell has worked with GNU Emacs since 1985.  He writes
  971.      and edits, teaches Emacs and Emacs Lisp, and speaks throughout the
  972.      world on software freedom.  Chassell was a founding Director and
  973.      Treasurer of the Free Software Foundation, Inc.  He is co-author of
  974.      the `Texinfo' manual, and has edited more than a dozen other
  975.      books.  He graduated from Cambridge University, in England.  He
  976.      has an abiding interest in social and economic history and flies
  977.      his own airplane.
  978.  
  979.     
  980.  
  981.  
  982.